Meteor ফ্রেমওয়ার্কে Authentication বা অ্যাকাউন্ট সিস্টেম সেট আপ করা খুবই সহজ এবং শক্তিশালী। Meteor এর সাথে একটি বিল্ট-ইন Accounts প্যাকেজ আসে, যা ডেভেলপারদের জন্য ব্যবহারকারীদের লগইন, রেজিস্ট্রেশন এবং সিকিউরড অ্যাকাউন্ট ম্যানেজমেন্ট সিস্টেম তৈরি করতে সহায়ক। এই সিস্টেমে ইমেইল-পাসওয়ার্ড ভিত্তিক লগইন, সোসিয়াল লগইন (যেমন ফেসবুক, গুগল, টুইটার), এবং আরও অনেক ফিচার রয়েছে।
Meteor এ Accounts প্যাকেজ ইনস্টল করা
Meteor এ Accounts প্যাকেজ ব্যবহার করার জন্য আপনাকে প্রথমে এটি ইনস্টল করতে হবে।
meteor add accounts-base
meteor add accounts-password
এছাড়া, যদি আপনি সোসিয়াল লগইন চান, তবে accounts-google, accounts-facebook ইত্যাদি প্যাকেজও যোগ করতে পারেন।
meteor add accounts-google
Meteor এ Accounts সিস্টেমের প্রধান অংশ
ইউজার রেজিস্ট্রেশন: Meteor এর Accounts.createUser() ফাংশন ব্যবহার করে নতুন ব্যবহারকারী তৈরি করা যেতে পারে।
Accounts.createUser({ email: 'user@example.com', password: 'password123', }, function(error) { if (error) { console.log('Error creating user:', error); } else { console.log('User created successfully'); } });এখানে, ব্যবহারকারী ইমেইল এবং পাসওয়ার্ড দিয়ে রেজিস্ট্রেশন করতে পারবেন।
লগইন:
ব্যবহারকারীকে লগইন করার জন্য Meteor.loginWithPassword() ব্যবহার করা হয়।Meteor.loginWithPassword('user@example.com', 'password123', function(error) { if (error) { console.log('Login failed:', error); } else { console.log('User logged in'); } });লগআউট: লগআউট করার জন্য Meteor.logout() ব্যবহার করা হয়।
Meteor.logout(function() { console.log('User logged out'); });সেশন পরিচালনা:
লগইন বা রেজিস্ট্রেশন সফল হলে, Meteor ডিফল্টভাবে Meteor.userId() এবং Meteor.user() এর মাধ্যমে ব্যবহারকারীর তথ্য অ্যাক্সেস করতে সহায়ক ফাংশন সরবরাহ করে।if (Meteor.userId()) { console.log('User is logged in:', Meteor.user().email); } else { console.log('User is not logged in'); }
সোসিয়াল মিডিয়া লগইন (OAuth)
Meteor সোসিয়াল মিডিয়া লগইন যেমন ফেসবুক, গুগল, টুইটার ইত্যাদি সমর্থন করে। সোসিয়াল লগইন সেটআপ করতে হলে আপনাকে সেগুলির জন্য প্রয়োজনীয় প্যাকেজ ইনস্টল করতে হবে এবং কনফিগারেশন করতে হবে।
ফেসবুক লগইন উদাহরণ:
প্রথমে, ফেসবুক লগইন প্যাকেজটি ইনস্টল করুন:
meteor add accounts-facebook
এরপর ফেসবুক অ্যাপের App ID এবং App Secret সংগ্রহ করুন এবং এটি আপনার settings.json বা Meteor.settings এ সংযুক্ত করুন:
{
  "public": {
    "facebook": {
      "appId": "your-app-id",
      "secret": "your-app-secret"
    }
  }
}
এখন, ফেসবুক লগইন করতে Meteor.loginWithFacebook() ফাংশন ব্যবহার করুন:
Meteor.loginWithFacebook({}, function(error) {
  if (error) {
    console.log('Facebook login failed:', error);
  } else {
    console.log('User logged in via Facebook');
  }
});
গুগল লগইন উদাহরণ:
গুগল লগইন সেটআপের জন্য accounts-google প্যাকেজ ইনস্টল করুন:
meteor add accounts-google
গুগল অ্যাপের Client ID এবং Client Secret সংগ্রহ করে সেটি settings.json ফাইলে রাখুন:
{
  "public": {
    "google": {
      "clientId": "your-client-id",
      "secret": "your-client-secret"
    }
  }
}
গুগল লগইন ব্যবহার করতে Meteor.loginWithGoogle() ফাংশন ব্যবহার করুন:
Meteor.loginWithGoogle({}, function(error) {
  if (error) {
    console.log('Google login failed:', error);
  } else {
    console.log('User logged in via Google');
  }
});
পাসওয়ার্ড রিসেট এবং ইমেইল ভেরিফিকেশন
Meteor ব্যবহারকারীর জন্য পাসওয়ার্ড রিসেট এবং ইমেইল ভেরিফিকেশন সিস্টেমও প্রদান করে।
পাসওয়ার্ড রিসেট:
Accounts.sendResetPasswordEmail('user@example.com');
এটি ব্যবহারকারীর ইমেইলে একটি পাসওয়ার্ড রিসেট লিঙ্ক পাঠাবে।
ইমেইল ভেরিফিকেশন:
Accounts.sendVerificationEmail(userId);
এটি ব্যবহারকারীকে ইমেইল ভেরিফিকেশন লিঙ্ক পাঠাবে।
Authentication সুরক্ষা এবং নিরাপত্তা
- পাসওয়ার্ড সুরক্ষা:
Meteor পাসওয়ার্ড হ্যাশিং এবং সিকিউরিটি জন্য ডিফল্টভাবে bcrypt ব্যবহার করে। - সেশন সুরক্ষা:
Meteor স্বয়ংক্রিয়ভাবে ব্যবহারকারীর সেশন পরিচালনা করে এবং সেশন TTL (Time-To-Live) ম্যানেজমেন্ট করে, যা লগইন কার্যক্রম সুরক্ষিত রাখে। - Role-based Access Control (RBAC):
Meteor এ role-based access control (RBAC) ব্যবহার করতে পারেন। আপনি ব্যবহারকারীকে বিভিন্ন role যেমনadmin,user,guestইত্যাদি প্রদান করে অ্যাক্সেস নিয়ন্ত্রণ করতে পারেন। 
সারাংশ
Meteor এর Accounts প্যাকেজ ব্যবহার করে খুব সহজেই অ্যাকাউন্ট সিস্টেম সেটআপ করা যায়। এতে লগইন, রেজিস্ট্রেশন, সোসিয়াল মিডিয়া লগইন, পাসওয়ার্ড রিসেট, এবং ইমেইল ভেরিফিকেশন ফিচার অন্তর্ভুক্ত থাকে। Meteor এর ডিফল্ট Accounts প্যাকেজ নিরাপত্তা এবং ব্যবহারকারীর সেশন সুরক্ষিত রাখার জন্য অতিরিক্ত সুবিধা প্রদান করে, যা ডেভেলপারদের জন্য দ্রুত এবং সুরক্ষিত অ্যাপ্লিকেশন তৈরি করতে সহায়ক।
Meteor একটি শক্তিশালী ফ্রেমওয়ার্ক, যা ডিফল্টভাবে একটি User Accounts System প্রদান করে। এটি সহজেই অ্যাপ্লিকেশনগুলিতে ইউজার সাইন আপ, সাইন ইন, সাইন আউট এবং পাসওয়ার্ড ম্যানেজমেন্ট ইত্যাদি ফিচারগুলো যোগ করতে সহায়ক। Meteor এর Accounts প্যাকেজটি, ইউজার অ্যাকাউন্ট ম্যানেজমেন্টের জন্য প্রয়োজনীয় সব ফিচার সরবরাহ করে, যেমন: ইউজার রেজিস্ট্রেশন, লগইন, লগআউট, পাসওয়ার্ড রিসেট ইত্যাদি।
এটি স্ট্যান্ডার্ড MongoDB ডাটাবেসে ইউজারের তথ্য সংরক্ষণ করে এবং সহজে কনফিগার করা যায়। চলুন, Meteor এর Built-in User Accounts System কীভাবে কাজ করে এবং এটি কীভাবে ব্যবহার করা যায় তা দেখিঃ
Meteor এর Built-in User Accounts System এর বৈশিষ্ট্য:
১. ইউজার সাইন আপ (Sign Up):
ব্যবহারকারীরা ইমেইল এবং পাসওয়ার্ড ব্যবহার করে সাইন আপ করতে পারে। Meteor এর Accounts প্যাকেজটি ইমেইল ভ্যালিডেশন, পাসওয়ার্ড এনক্রিপশন, এবং অন্য সব সিকিউরিটি ফিচার সরবরাহ করে।
২. ইউজার সাইন ইন (Sign In):
ব্যবহারকারীরা তাদের ইমেইল এবং পাসওয়ার্ড দিয়ে লগইন করতে পারে। এটি সম্পূর্ণরূপে ক্লায়েন্ট সাইড এবং সার্ভার সাইডের মধ্যে নিরাপদ সংযোগ পরিচালনা করে।
৩. পাসওয়ার্ড রিসেট (Password Reset):
ব্যবহারকারীরা যদি তাদের পাসওয়ার্ড ভুলে যান, তবে তারা একটি পাসওয়ার্ড রিসেট লিঙ্ক ইমেইল মাধ্যমে গ্রহণ করতে পারে।
৪. ইউজার প্রোফাইল (User Profile):
Meteor ব্যবহারের মাধ্যমে ইউজাররা তাদের প্রোফাইল তথ্য সম্পাদনা করতে পারে। Meteor.users কলেকশন দ্বারা ইউজারদের প্রোফাইল ডেটা সংরক্ষিত হয়।
৫. রোল এবং পারমিশন:meteor add প্যাকেজের মাধ্যমে বিশেষ রোল এবং পারমিশন তৈরি করা যায়, যা নির্দিষ্ট ইউজারদের জন্য নির্দিষ্ট অ্যাক্সেস কন্ট্রোল করতে সাহায্য করে।
Meteor User Accounts System এর জন্য প্যাকেজ ইনস্টল করা
Meteor এর User Accounts সিস্টেম ব্যবহার করতে, প্রথমে আপনাকে accounts-base প্যাকেজ এবং অন্যান্য সম্পর্কিত প্যাকেজগুলো ইনস্টল করতে হবে।
প্যাকেজ ইনস্টল করা:
meteor add accounts-base accounts-ui
accounts-base: এটি মূল প্যাকেজ যা ইউজার ম্যানেজমেন্টের জন্য ব্যবহৃত হয়।accounts-ui: এটি ইউজার অ্যাকাউন্ট সিস্টেমের জন্য UI প্রদান করে (যেমন লগইন/সাইন আপ ফর্ম)।
ইউজার অ্যাকাউন্ট সিস্টেম কনফিগারেশন
Meteor অ্যাপ্লিকেশনে User Accounts সিস্টেম কনফিগার করা খুবই সহজ। প্রথমে, আপনাকে Accounts.onCreateUser ফাংশন ব্যবহার করে ইউজারের তথ্য প্রক্রিয়া করতে হতে পারে (যেমন, ইউজার ডিফল্ট প্রোফাইল সেট করা)।
উদাহরণ:
// /server/main.js
import { Meteor } from 'meteor/meteor';
import { Accounts } from 'meteor/accounts-base';
Meteor.startup(() => {
  // সাইন আপ করার সময় ইউজারের প্রোফাইল তৈরি করা
  Accounts.onCreateUser((options, user) => {
    if (options.profile) {
      user.profile = options.profile;
    }
    return user;
  });
});
ইউজার সাইন আপ এবং লগইন UI যোগ করা
UI এর মাধ্যমে সাইন আপ এবং লগইন ফর্ম যোগ করতে, accounts-ui প্যাকেজ ব্যবহার করা হয়। এটি আপনার অ্যাপ্লিকেশনে একটি সাইন ইন এবং সাইন আউট বাটন যোগ করে।
HTML ফাইলের মধ্যে UI যোগ করা:
<!-- /client/main.html -->
<head>
  <title>My Meteor App</title>
</head>
<body>
  <h1>Welcome to Meteor</h1>
  {{> loginButtons}} <!-- লগইন/সাইন আউট বাটন -->
</body>
{{> loginButtons}} কম্পোনেন্টটি একটি প্রি-বিল্ট কম্পোনেন্ট যা সাইন ইন/সাইন আপ, পাসওয়ার্ড রিসেট এবং লগ আউট ফিচার প্রদর্শন করে।
পাসওয়ার্ড রিসেট ফিচার
ইউজারের পাসওয়ার্ড রিসেট করার জন্য একটি লিঙ্ক পাঠানো হয়, যা ব্যবহারকারী তাদের পাসওয়ার্ড পুনরায় সেট করতে পারে। এটি UI দ্বারা {{> forgotPassword}} এবং {{> resetPassword}} কম্পোনেন্টের মাধ্যমে করা হয়।
পাসওয়ার্ড রিসেট ফর্ম ব্যবহার:
<!-- /client/reset-password.html -->
{{> forgotPassword}}
ইউজার প্রোফাইল কাস্টমাইজ করা
User Accounts সিস্টেমের মাধ্যমে, ব্যবহারকারী তাদের প্রোফাইলের তথ্য কাস্টমাইজ করতে পারে। উদাহরণস্বরূপ, একটি প্রোফাইল ফর্ম তৈরি করা যা ব্যবহারকারী তাদের নাম এবং ছবি আপডেট করতে পারে:
// /client/main.js
import { Meteor } from 'meteor/meteor';
Meteor.startup(() => {
  // প্রোফাইল আপডেট করার জন্য ফাংশন
  Template.profile.helpers({
    user() {
      return Meteor.user();
    },
  });
  Template.profile.events({
    'submit .update-profile'(event) {
      event.preventDefault();
      const name = event.target.name.value;
      Meteor.users.update(Meteor.userId(), {
        $set: { 'profile.name': name },
      });
    },
  });
});
সারাংশ
Meteor এর Built-in User Accounts System সহজ এবং দ্রুত ইউজার অ্যাকাউন্ট ম্যানেজমেন্ট সিস্টেম তৈরি করতে সহায়ক। এটি ইমেইল-পাসওয়ার্ড ভিত্তিক সাইন আপ এবং লগইন, পাসওয়ার্ড রিসেট, এবং প্রোফাইল ম্যানেজমেন্টের মতো ফিচারগুলি সহজেই ইনস্টল এবং কনফিগার করতে দেয়। accounts-base এবং accounts-ui প্যাকেজগুলো ব্যবহার করে আপনি একটি পূর্ণাঙ্গ ইউজার অ্যাকাউন্ট সিস্টেম তৈরি করতে পারবেন, যা রিয়েল-টাইম অ্যাপ্লিকেশন তৈরির জন্য উপযুক্ত।
Meteor ফ্রেমওয়ার্কে authentication বা প্রমাণীকরণ পরিচালনা করার জন্য Meteor একটি সহজ এবং শক্তিশালী প্যাকেজ প্রদান করে, যার নাম Accounts। Accounts-password প্যাকেজ ব্যবহার করে আপনি পাসওয়ার্ড বেসড প্রমাণীকরণ সহজে পরিচালনা করতে পারেন এবং OAuth প্যাকেজের সাহায্যে আপনি অন্যান্য সার্ভিস যেমন Google, Facebook, GitHub ইত্যাদি ব্যবহার করে থার্ড-পার্টি Authentication যোগ করতে পারেন।
এখানে Accounts-password এবং OAuth ব্যবহার করে Authentication সেটআপ এবং কনফিগার করার পুরো প্রক্রিয়া আলোচনা করা হলো।
Step 1: Accounts-password প্যাকেজ ইনস্টল করা
Meteor এ Accounts-password প্যাকেজ ইনস্টল করা খুবই সহজ। এটি দিয়ে আপনি পাসওয়ার্ড বেসড Authentication পরিচালনা করতে পারেন।
প্যাকেজ ইনস্টল করুন:
meteor add accounts-passwordপাসওয়ার্ড দিয়ে ব্যবহারকারী তৈরি: আপনি createUser মেথড ব্যবহার করে নতুন ব্যবহারকারী তৈরি করতে পারেন। এটি পাসওয়ার্ড দিয়ে ইউজারকে সাইন আপ করতে সহায়ক।
Meteor.methods({ createUserAccount: function(email, password) { const userId = Accounts.createUser({ email: email, password: password, }); return userId; } });- লগ ইন এবং লগ আউট: লগ ইন এবং লগ আউট করার জন্য Meteor প্যাকেজটি কিছু built-in মেথড সরবরাহ করে:
লগ ইন করা:
Meteor.loginWithPassword('user@example.com', 'password123');লগ আউট করা:
Meteor.logout();
 ইউজার সেশন চেক করা: আপনি সেশনের মাধ্যমে ইউজারের লগ ইন স্টেটাস চেক করতে পারেন:
if (Meteor.user()) { console.log('User is logged in'); } else { console.log('User is logged out'); }
Step 2: OAuth Authentication সেটআপ
Meteor এ OAuth ব্যবহার করে তৃতীয় পক্ষের প্রমাণীকরণ সিস্টেম যুক্ত করা সম্ভব। এতে আপনি Google, Facebook, GitHub, Twitter এবং অন্যান্য OAuth প্রোভাইডারদের মাধ্যমে Authentication পরিচালনা করতে পারেন।
OAuth প্যাকেজ ইনস্টল করুন: বিভিন্ন OAuth প্রোভাইডার ইন্টিগ্রেট করতে আপনাকে সেগুলোর জন্য আলাদা প্যাকেজ ইনস্টল করতে হবে। উদাহরণস্বরূপ, Google OAuth ব্যবহার করতে:
meteor add accounts-googleএর পাশাপাশি আপনি Facebook, GitHub, এবং অন্যান্য সার্ভিসের জন্য আলাদা প্যাকেজ যোগ করতে পারেন:
meteor add accounts-facebook meteor add accounts-githubOAuth কনফিগারেশন: OAuth প্রোভাইডার সেটআপ করতে আপনাকে প্রথমে তাদের ডেভেলপার পোর্টালে অ্যাপ্লিকেশন তৈরি করতে হবে এবং অ্যাপের Client ID এবং Secret Key পাবেন। তারপর Meteor অ্যাপ্লিকেশনে তা কনফিগার করতে হবে।
উদাহরণস্বরূপ, Google OAuth কনফিগার করতে:
ServiceConfiguration.configurations.upsert( { service: "google" }, { $set: { clientId: "YOUR_GOOGLE_CLIENT_ID", secret: "YOUR_GOOGLE_SECRET", }, } );OAuth লগ ইন: একবার কনফিগারেশন হয়ে গেলে, আপনি OAuth ব্যবহারকারীদের লগ ইন করতে পারবেন। উদাহরণস্বরূপ Google OAuth দিয়ে লগ ইন:
Meteor.loginWithGoogle({}, function(err) { if (err) { console.log("Google login failed", err); } else { console.log("Google login successful"); } });OAuth প্রোভাইডার থেকে ব্যবহারকারী তথ্য নেওয়া: আপনি লগ ইন করা ব্যবহারকারীর তথ্য Meteor.user() দিয়ে পেতে পারেন:
const user = Meteor.user(); if (user) { console.log('Logged in user:', user.profile.name); }
Step 3: পাসওয়ার্ড এবং OAuth একসাথে ব্যবহার করা
Meteor আপনাকে OAuth এবং password-based authentication একসাথে ব্যবহার করার সুযোগ দেয়। আপনি চাইলে একই অ্যাপ্লিকেশনে উভয় ধরনের প্রমাণীকরণ পদ্ধতি ব্যবহার করতে পারেন।
এটা হতে পারে এমনভাবে:
- OAuth-এ লগ ইন করা ব্যবহারকারী: যখন একটি ব্যবহারকারী OAuth মাধ্যমে লগ ইন করেন, তখন Meteor তা স্বয়ংক্রিয়ভাবে Accounts সিস্টেমের মধ্যে সংযুক্ত করে, এবং আপনি Meteor.user() ব্যবহার করে ব্যবহারকারীর তথ্য পেতে পারেন।
 - পাসওয়ার্ড দিয়ে লগ ইন: পাসওয়ার্ড দিয়ে লগ ইন করলেও Meteor একইভাবে ব্যবহারকারীর তথ্য Accounts সিস্টেমের মধ্যে সংরক্ষণ করে।
 - একই অ্যাপ্লিকেশন ব্যবহার করে উভয় Authentication পদ্ধতি ব্যবহার করা: আপনি একটি অ্যাপ্লিকেশন তৈরি করতে পারেন যেখানে ব্যবহারকারীরা তাদের পাসওয়ার্ডের মাধ্যমে অথবা OAuth মাধ্যমে লগ ইন করতে পারবেন। এটি সাধারণত ঐতিহ্যবাহী ওয়েব অ্যাপ্লিকেশনে এবং সোসাল লোগিন ফিচারের মধ্যে সুসম্পর্ক বজায় রাখে।
 
সারাংশ
Meteor দিয়ে Accounts-password এবং OAuth প্যাকেজের মাধ্যমে আপনি খুব সহজে Authentication ব্যবস্থা তৈরি করতে পারেন। Accounts-password প্যাকেজ পাসওয়ার্ড বেসড লগ ইন সিস্টেম সরবরাহ করে, যেখানে ব্যবহারকারীরা তাদের ইমেইল এবং পাসওয়ার্ড দিয়ে লগ ইন করতে পারেন। OAuth প্যাকেজ ব্যবহার করে আপনি বিভিন্ন থার্ড-পার্টি সেবার মাধ্যমে সোসাল লগ ইন ফিচার যোগ করতে পারেন, যেমন Google, Facebook, এবং GitHub। উভয় পদ্ধতি একসাথে ব্যবহার করে আপনি একটি শক্তিশালী এবং ব্যবহারকারী বান্ধব Authentication ব্যবস্থা তৈরি করতে পারবেন।
Meteor-এ Social Media Integration (যেমন Google, Facebook, এবং Twitter) অত্যন্ত সহজ, কারণ Meteor এ Accounts প্যাকেজের মাধ্যমে এসব সোশ্যাল মিডিয়া সাইন ইন সমর্থন করা হয়। Meteor's Accounts সিস্টেমের সাথে OAuth ইন্টিগ্রেশন করার মাধ্যমে আপনি সহজেই আপনার অ্যাপ্লিকেশনগুলোতে Google, Facebook, এবং Twitter লোগিন যোগ করতে পারেন।
প্রয়োজনীয় প্যাকেজগুলি ইনস্টল করা
প্রথমেই আপনাকে Meteor-এ Google, Facebook, এবং Twitter সাইন ইন ইন্টিগ্রেট করতে প্রয়োজনীয় প্যাকেজগুলো ইনস্টল করতে হবে।
meteor add accounts-base accounts-ui
meteor add accounts-google
meteor add accounts-facebook
meteor add accounts-twitter
accounts-baseএবংaccounts-ui: ইউজার অ্যাকাউন্ট ব্যবস্থাপনা।accounts-google: Google OAuth ইন্টিগ্রেশন।accounts-facebook: Facebook OAuth ইন্টিগ্রেশন।accounts-twitter: Twitter OAuth ইন্টিগ্রেশন।
Google Integration
Google OAuth Integration-এর জন্য Google Developer Console থেকে একটি OAuth 2.0 Client ID তৈরি করতে হবে।
১. Google Developer Console এ অ্যাপ রেজিস্টার করা
- Google Developer Console এ যান।
 - একটি নতুন প্রোজেক্ট তৈরি করুন।
 - APIs & Services > Credentials এ যান এবং একটি OAuth 2.0 Client ID তৈরি করুন।
 - আপনার authorized JavaScript origins এবং redirect URIs সেট করুন (যেমন 
http://localhost:3000/এবংhttp://localhost:3000/_oauth/google) 
২. Meteor সার্ভারে Google Integration সেট করা
// /server/main.js
import { Accounts } from 'meteor/accounts-base';
Meteor.startup(() => {
  // Google OAuth credentials
  Accounts.ui.config({
    passwordSignupFields: 'EMAIL_ONLY',
    requestPermissions: {
      google: ['email', 'profile']
    },
    requestOfflineToken: {
      google: true
    },
  });
});
Facebook Integration
Facebook OAuth Integration এর জন্য আপনাকে Facebook Developer Console থেকে একটি App ID এবং App Secret তৈরি করতে হবে।
১. Facebook Developer Console এ অ্যাপ রেজিস্টার করা
- Facebook Developer Console এ যান।
 - একটি নতুন অ্যাপ তৈরি করুন।
 - App ID এবং App Secret তৈরি করুন।
 - আপনার OAuth redirect URIs এর মধ্যে 
http://localhost:3000/_oauth/facebookযোগ করুন। 
২. Meteor সার্ভারে Facebook Integration সেট করা
// /server/main.js
import { Accounts } from 'meteor/accounts-base';
Meteor.startup(() => {
  // Facebook OAuth credentials
  Accounts.ui.config({
    passwordSignupFields: 'EMAIL_ONLY',
    requestPermissions: {
      facebook: ['public_profile', 'email']
    }
  });
});
Twitter Integration
Twitter OAuth Integration এর জন্য আপনাকে Twitter Developer Console থেকে API Key এবং API Secret Key তৈরি করতে হবে।
১. Twitter Developer Console এ অ্যাপ রেজিস্টার করা
- Twitter Developer Console এ যান।
 - একটি নতুন অ্যাপ তৈরি করুন।
 - API Key এবং API Secret Key তৈরি করুন।
 - OAuth callback URL: 
http://localhost:3000/_oauth/twitter 
২. Meteor সার্ভারে Twitter Integration সেট করা
// /server/main.js
import { Accounts } from 'meteor/accounts-base';
Meteor.startup(() => {
  // Twitter OAuth credentials
  Accounts.ui.config({
    passwordSignupFields: 'EMAIL_ONLY',
    requestPermissions: {
      twitter: ['read', 'write']
    }
  });
});
UI-তে Social Media Login বাটন যোগ করা
Meteor-এ সোশ্যাল মিডিয়া লগইন বাটন যোগ করতে accounts-ui প্যাকেজের প্রি-বিল্ট `{{> loginButtons}} কম্পোনেন্ট ব্যবহার করা যায়, যা লগইন/সাইন আউট বাটন দেখায় এবং সোশ্যাল মিডিয়া লগইন অপশনও প্রদান করে।
<!-- /client/main.html -->
<head>
  <title>My Social Media App</title>
</head>
<body>
  <h1>Welcome to My Social Media App</h1>
  {{> loginButtons}} <!-- এই কম্পোনেন্টটি সাইন ইন এবং সোশ্যাল মিডিয়া লোগিন বাটন যোগ করবে -->
</body>
Complete Flow:
- সাইন আপ / লগইন:
ব্যবহারকারী যদি Google, Facebook, অথবা Twitter ব্যবহার করে সাইন ইন করতে চায়, তাহলে তারা সেই সোশ্যাল মিডিয়া অ্যাকাউন্টে লগইন করবে। - OAuth Token:
Meteor অ্যাপ্লিকেশনটি ওই সোশ্যাল মিডিয়া প্ল্যাটফর্মের থেকে OAuth token গ্রহণ করবে এবং সাইন ইন প্রক্রিয়া সম্পন্ন হবে। - অ্যাকাউন্ট সংযুক্ত করা:
ব্যবহারকারী সাইন ইন করার পর, Meteor’s Accounts system তাদের অ্যাকাউন্ট তৈরি করবে বা বর্তমান অ্যাকাউন্টের সাথে সংযুক্ত করবে। 
সারাংশ
Meteor-এর Social Media Integration প্রক্রিয়া অত্যন্ত সহজ এবং সরল। Google, Facebook, এবং Twitter ইন্টিগ্রেশন সেট আপ করার জন্য Accounts প্যাকেজ ব্যবহার করা হয়। এতে সোশ্যাল মিডিয়া অ্যাকাউন্টের মাধ্যমে দ্রুত লগইন করার সুবিধা পাওয়া যায়। এই প্রক্রিয়া শুরু থেকে শেষ পর্যন্ত কয়েকটি সহজ পদক্ষেপ অনুসরণ করেই করা যায় এবং OAuth সিস্টেমের মাধ্যমে নিরাপদভাবে সোশ্যাল মিডিয়া লোগিন নিশ্চিত করা হয়।
Meteor এ Authentication এবং Authorization ব্যবস্থাপনা অত্যন্ত গুরুত্বপূর্ণ একটি দিক। Authentication হলো ব্যবহারকারীর পরিচয় যাচাই করা, অর্থাৎ নিশ্চিত করা যে ব্যবহারকারী সত্যিই কে সে দাবি করছে। Authorization হলো সেই পরিচিত ব্যবহারকারীকে নির্দিষ্ট কার্যকলাপে অনুমতি দেওয়া, যেমন একটি নির্দিষ্ট রিসোর্সে অ্যাক্সেস প্রদান বা সীমাবদ্ধ করা।
Meteor এর ডিফল্ট প্যাকেজের মাধ্যমে সহজে authentication ও authorization পরিচালনা করা যায়, কিন্তু custom authentication এবং authorization ব্যবস্থাপনা তৈরি করতে চাইলে কিছু কোড এবং কাস্টম লজিক ব্যবহার করতে হয়। এখানে Custom Authentication এবং Custom Authorization ব্যবস্থাপনার একটি বিস্তারিত নির্দেশনা দেওয়া হলো।
Custom Authentication
Meteor ডিফল্টভাবে accounts-base প্যাকেজের মাধ্যমে ইউজারের Authentication পরিচালনা করে, কিন্তু আপনি চাইলে custom authentication সিস্টেমও তৈরি করতে পারেন। এর জন্য Meteor Methods এবং custom validation ব্যবহার করা হয়।
১. Custom Login ফাংশন
ধরা যাক, আপনি নিজস্ব ইউজার ভেরিফিকেশন লজিক তৈরি করতে চান, যেখানে আপনি ডাটাবেস থেকে ইউজারের ইমেইল এবং পাসওয়ার্ড যাচাই করবেন।
// Server side - Custom login function
Meteor.methods({
  'customLogin': function(email, password) {
    // Check email and password validity
    const user = Users.findOne({ email: email });
    if (user && user.password === password) {
      // Create a custom login session if validation is successful
      this.setUserId(user._id);
      return true; // Login successful
    }
    throw new Meteor.Error('login-failed', 'Invalid email or password');
  }
});
এই কোডটি Users Collection এ ইউজারের তথ্য যাচাই করবে এবং সঠিক হলে তাকে লগ ইন করবে। this.setUserId() ব্যবহার করা হয়েছে যাতে সিস্টেমটি ব্যবহারকারীকে সেশন হিসেবে শনাক্ত করতে পারে।
২. Custom Signup ফাংশন
Custom Signup এর জন্য, আপনি পাসওয়ার্ড এবং ইমেইল যাচাই করে নতুন ইউজার তৈরি করতে পারেন।
// Server side - Custom Signup function
Meteor.methods({
  'customSignup': function(email, password) {
    // Check if user already exists
    const existingUser = Users.findOne({ email: email });
    if (existingUser) {
      throw new Meteor.Error('user-exists', 'User with this email already exists');
    }
    // Create a new user in the database
    const newUser = {
      email: email,
      password: password,
      createdAt: new Date()
    };
    const userId = Users.insert(newUser);
    // Return the userId for further usage
    return userId;
  }
});
এটি নতুন ইউজার তৈরি করার জন্য একটি কাস্টম ফাংশন। ইউজারের ইমেইল এবং পাসওয়ার্ড যাচাই করা হয়, এবং যদি ইউজার না থাকে তবে নতুন ইউজার তৈরি করা হয়।
Custom Authorization
Authorization এর মাধ্যমে আপনি নির্দিষ্ট রিসোর্স বা কার্যকলাপে কোন ইউজারের অ্যাক্সেস প্রদান বা সীমাবদ্ধ করতে পারেন। Meteor এর ডিফল্ট প্যাকেজ যেমন accounts-base-এ কিছু authorization ব্যবস্থা রয়েছে, কিন্তু আপনি চাইলে নিজের কাস্টম authorization সিস্টেম তৈরি করতে পারেন।
১. Custom Authorization Method
// Server side - Custom Authorization function
Meteor.methods({
  'accessResource': function(resourceId) {
    const userId = this.userId; // Current logged-in user
    if (!userId) {
      throw new Meteor.Error('not-authorized', 'User is not logged in');
    }
    // Check if the user has permission to access the resource
    const user = Users.findOne(userId);
    if (user.role !== 'admin') {
      throw new Meteor.Error('access-denied', 'You do not have permission to access this resource');
    }
    // If authorized, allow access to the resource
    const resource = Resources.findOne(resourceId);
    return resource;
  }
});
এখানে, accessResource মেথডটি কাস্টম authorization লজিক ব্যবহার করে ইউজারের role চেক করে। যদি ইউজারের role admin না হয়, তবে অ্যাক্সেস নিষিদ্ধ করা হয়।
২. User Role Management
কাস্টম authorization লজিকের জন্য, আপনাকে সাধারণত ইউজারের role বা permission সংরক্ষণ করতে হবে। উদাহরণস্বরূপ:
// Server side - User role management
Users.update(userId, {
  $set: { role: 'admin' }
});
এটি ইউজারের রোল admin হিসেবে সেট করবে, এবং পরবর্তীতে authorization চেকের জন্য এটি ব্যবহার করা যাবে।
Custom Authentication এবং Authorization এর সিকিউরিটি
- Password Hashing:
পাসওয়ার্ড নিরাপদ রাখতে bcrypt বা hashing মেথড ব্যবহার করা গুরুত্বপূর্ণ। এটি ইউজারের পাসওয়ার্ড সঠিকভাবে এনক্রিপ্ট করে রাখে। - Token-based Authentication:
JWT (JSON Web Token)ব্যবহার করে token-based authentication তৈরি করা সম্ভব। এটি API-এর জন্য একটি আধুনিক এবং নিরাপদ অথেন্টিকেশন পদ্ধতি। - Role-based Authorization:
Role-based authorization ব্যবহার করে আপনি বিভিন্ন ইউজারের জন্য বিভিন্ন পারমিশন তৈরি করতে পারেন। যেমন,admin,editor,userইত্যাদি। - Security Best Practices:
সবসময় HTTPS ব্যবহার করুন, পাসওয়ার্ড বা সেশন ডেটা secure cookie এ সংরক্ষণ করুন, এবং SQL ইনজেকশন, XSS এবং CSRF আক্রমণ থেকে সুরক্ষা নিশ্চিত করুন। 
সারাংশ
Custom Authentication এবং Custom Authorization তৈরি করার মাধ্যমে আপনি আপনার Meteor অ্যাপ্লিকেশনের সিকিউরিটি এবং ইউজার ম্যানেজমেন্ট আরও কাস্টমাইজ করতে পারবেন। Meteor.methods ব্যবহার করে আপনি কাস্টম লগইন, সাইনআপ এবং রোল-বেসড অথোরাইজেশন সিস্টেম তৈরি করতে পারবেন। সঠিক নিরাপত্তা ব্যবস্থা যেমন password hashing এবং role management ব্যবহার করলে এটি আরও সুরক্ষিত হবে।
Read more